Ink jet printing systems produce images by printing patterns of dots on a sheet of print media, such as paper. Such systems typically include two main mechanisms for determining the location of dots on the page, namely, a halftone mechanism and a shingling mechanism. Such mechanisms may be implemented, for example, in software, firmware, hardware, or a combination thereof, and may reference one or more lookup tables.
The halftone mechanism compensates for the inability of an ink jet printer, i.e., a binary printer, to print a continuous range of tones. For example, a binary printer can only produce colors by either printing or not printing a dot of ink, which at first glance would suggest only two shades can be printed. However, by printing patterns of various percentages of ink in a given area between zero percent and 100 percent ink, in effect many shades can be produced. Thus, halftoning involves the eventual pattern of dots placed on a page as a result of the printing process and the halftone pattern is visible to the user after the page is completely rendered.
One commonly used halftone algorithm utilized in ink jet printing is error diffusion. In summary, error diffusion operates on a pixel by pixel basis by first comparing the 0 to 255 value from the color conversion against a threshold, nominally 127. If greater, a drop is printed (actual=255). If less, no drop is printed (actual=0). The difference between the actual value printed and the desired value from the color conversion is computed as an error. The error is then spread to neighboring values to compensate for overprinting or underprinting at the present position. Since error is distributed to neighbors instead of discarded, the correct number of drops will be placed on the page on average. In error diffusion, the dots are maximally dispersed, i.e., there are no clumps of dots and consequently no void white areas. Large areas of dot clumps or voids are more visible to the human eye than the dispersed patterns produced by error diffusion.
Once the halftone mechanism has decided where the dots of ink are to be placed on the page, the shingling mechanism decides on which pass of a plurality of passes of the ink jet printhead over a given print area that particular dots of ink are to be deposited. Whereas it may be possible to print all of the dots on a single pass over a given area, in general multiple passes are used to hide horizontal bands. It is the function of the shingling mechanism to deposit all of the dots once, and only once, in the positions determined by the halftone algorithm.
According to conventional 2-pass shingling, for example, wherein the variable N represents the number of printing passes, on a single pass of the printhead 1/N=½=50% of the dots are printed, commonly using a “checkerboard” pattern, which is defined by a shingling mask. The shingling mask determines for a given area the pixel locations within that area that may receive a dot of ink in a particular printing pass, and the pixel locations that will not receive a dot of ink on that particular printing pass. Between passes, the paper is moved with respect to the printhead by a distance equal to 1/N=½=50% of the height of the printhead. Additionally, between passes of the printhead the shingling pattern is changed from one phase of the checkerboard shingling mask to the complementary phase of the checkerboard shingling mask. By advancing the paper and changing the shingle mask phases, all of the dots at each of the pixel positions in the checkerboard pattern have one and only one chance to be printed.
While shingling at N=2 was used in the example described above, it is also known to perform shingling where the number of passes is greater than 2, e.g., where N=3, 4, 6, 8 and 16. The ideas are the same as for N=2 pass shingling in that a fraction of approximately 1/N of the dots requested by the halftone to eventually be deposited is placed on each pass, and the paper is advanced by about 1/N of the fractional height of the printhead. Additionally, the shingling pattern of each level of a shingle mask is extended beyond that of a checkerboard to a different, but typically small, repeating pattern.
It is common in inkjet printing that the N passes of shingling are not typically properly aligned with respect to one another, for a variety of reasons. For example, although the paper should advance by 1/N of the height of the printhead between successive passes, typically the paper advances either a little more (overfeed) or a little less (underfeed) than requested. Further, the amount of overfeed or underfeed may vary from pass to pass, and is typically worse at the bottom of the printed page as the paper has exited the rollers that primarily govern its movement. As an additional example, two subsequent passes are commonly printed in different directions which results in misalignment due to the difference in flight dynamics of drops as they travel between the nozzle ejector and the paper when printed in opposite directions.
Thus, although the pattern of dots requested by error diffusion halftoning might have the desired visual properties of a dot pattern, a sample of such a pattern taken according to the prior art shingle mask techniques may not posses the desired visual properties on the printed page. In other words, when the multiple passes are printed with placement error between the passes (overfeed/underfeed, or bidirectional misalignment) the overall pattern on paper is adversely impacted.
What is needed in the art is a method that produces patterns of dots on paper that have visually desirable properties whether or not the multiple passes are properly aligned.